home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Magnum One
/
Magnum One (Mid-American Digital) (Disc Manufacturing).iso
/
d8
/
mnu.arc
/
BNU.DOC
< prev
next >
Wrap
Text File
|
1991-03-14
|
66KB
|
1,717 lines
┌───────────────────────────────────────────────────────────┐
│ BNU Rev 5 FOSSIL Compatible Communications Driver │
│ Release 1.70 │
└───────────────────────────────────────────────────────────┘
26th October, 1989
Copyright (C) 1989
David Nugent and Unique Computing Pty Limited
Melbourne, Australia.
FidoNet 3:632/348.0
AlterNet 7:833/387.0
FreeNet 23:2/3.0
BNU is 'freely' available copyrighted software, and supplied
no charge to system operators of Fidonet(tm) and 'Othernet'
public access amateur network systems. It is NOT available
in this form for commercial use or use outside of amateur
EMail systems.
Please read the License details at the end of this document
on contacting the author regarding commercial application of
BNU and associated products.
BNU Revision 5 FOSSIL Communications Driver
Version 1.70
BNU is a FOSSIL compatible Communications driver, suitable
for use with the following (among others) bulletin board and
FidoNet(tm) mailer software:
Fido v11,12 Tom Jennings, Fido Software
BinkleyTerm Vince Perriello, Bob Hartman, Alan Applegate,
& Bit Bucket Software
Opus-CBCS Wynn Wagner III, The POLE of Dallas
QuickBBS Adam Hudson
TPBoard John Schnieder & Rick Peterson
SEAdog Thom Henderson, System Enhancement Associates
D'Bridge Chris Irwin
FrontDoor Joaquim Homrighausen, Interzone Software, Inc.
It handles hardware specific aspects of communications, to
enable the above applications to run in multiple environments
which are supported by a FOSSIL compatible driver. BNU is
designed for the IBM PC, XT, AT, AT/386 and PS/2 range under
the MS-DOS operating system version 2.10 and above, OS/2 in
'DOS compatibility' mode and under PC-MOS/386. It may also
be compatible with other environments which emulate MS-DOS.
The term 'FOSSIL' is short for "Fido Opus SEAdog Standard
Interface Layer". It is a generic hardware interface used
mainly by bulletin board systems and Fidonet compatible mail
software which evolved from the efforts of Wynn Wagner, Bob
Hartman and Vince Perriello. The current "Revision 5"
standard makes it possible for a lot of software to run on a
wide variety of hardware platforms capable of running MS-DOS
but with distinct and incompatible hardware.
BNU's main task is communications handling. It is a fully
interrupt driven communications driver which effectively
handles communications "in background", and continues to
receive and transmit characters asynchronously with any
program or application running. The application itself need
not be concerned about the time critical aspects of
communications, nor the capabilities, limitations or features
of the hardware itself. These are all handled by BNU itself.
BNU is one of many FOSSIL drivers available. BNU implements
many features found in other(tm) FOSSIL drivers, sometimes in
a slightly different way. Known differences will be
highlighted.
This package contains BNU.COM, with the driver itself being a
TSR program (Terminate and Stay Resident) which may be loaded
and unloaded, activated or made dormant "on-the-fly"; and
also BNU.SYS, a device driver implementation loaded from
CONFIG.SYS. This is not as 'flexible' as using BNU.COM, but
in general conserves some memory and allows loading in some
environments where the TSR implementation cannot be used.
- 1 -
BNU Revision 5 FOSSIL Communications Driver
Version 1.70
Some of BNU's unique and more interesting features are:
o BNU has been built to handle up to 4 COM ports
concurrently in up to 16 different configurations,
o It has an "open architecture" which will allow is
adaptation later in its development to support
multiport shared interrupt and intelligent
asynchronous IO boards,
o It supports the 16550 USART in fully buffered mode,
providing the capability of much higher baud rates,
performance and significantly less CPU overhead
especially in multitasking environments,
o The driver is extremely FAST, optimised for speed,
and takes up very little memory,
o Incorporates an optional "diagnostic" mode, so you
(the user) can inspect the state of the FOSSIL
driver itself; assisting in debugging and
optimisation of software being written to use
FOSSIL calls, and in attempting to determine
problems in software using a FOSSIL, such as a
mailer, BBS or BBS 'door',
o Has 'hooks' for an installable driver to support
network and multitasking software, forcing ill-
behaved processor intensive programs to give more
of their time-slice to the system when inactive or
when simply "polling" communications or keyboard
functions for activity or status reports,
o Allows 'fast' routing of screen output directly via
the ANSI driver, making "FOSSIL" screen output
calls significantly faster than going via DOS
itself,
o Allows for problems in some XT & AT BIOS' when
16550AN's are installed: very often a BIOS will
not 'see' the communications chip during startup
diagnostics - so BNU will force the BIOS to
recognise it automatically,
o Provides a full range of utility functions in the
same .COM file, including built-in carrier watch,
system reboot, lock baud rate and/or communications
parameters and allowing some PC BIOS compatible
non-FOSSIL aware software to take advantage of a
interrupt driven communications,
o Allows resizing of communications buffers and
locking/unlocking of baud rates and other
communications parameters "on-the-fly",
o Provides a means of displaying the currently loaded
driver's "status" and active parameters.
- 2 -
BNU Revision 5 FOSSIL Communications Driver
Version 1.70
BNU.COM is both a FOSSIL driver (TSR) and a utility which can
manipulate the resident version of itself. On first
successful loading, it will terminate and leave the driver
portion of itself (only about 5K or so plus buffer
requirements) resident, and allocate communication buffers
for each of the enabled ports (typically using 14K for a one
port install when 'diagnostics' mode is enabled). It then
captures and utilises the system's INT 14H (communications
services) vector and services requests for all FOSSIL and
non-FOSSIL aware programs using the INT 14H interface.
BNU will NEVER load itself more than once, unless within
different tasks when using a multitasker, such as
PC-MOS/386(tm), DESQview(tm), DoubleDOS(tm) or VM/386(tm).
This documentation assumes a working knowledge of MS-DOS, and
no effort is made to explain MS-DOS functions, commands or
setup. Some familiarity with BBS or mail capable software
and other FOSSIL drivers will definitely be an advantage, but
not required.
USING BNU
When running BNU, avoid using any other software which
purports to enhance communications products (such as
16550.EXE). These WILL NOT work, and could cause your system
to crash or work unreliably. BNU already uses the 16550 and
16550AN to full advantage.
Avoid loading DOS's MODE command with BNU. BNU is
incompatible with it's communications handling - if loaded
after BNU, then both may fail to operate reliably. Printer
redirection is usually ok, provided MODE is loaded before
BNU.
If you need to set a COM port's baud rate (which is why MODE
is most often used), then you can get BNU to do that by
"locking" the baud rate (using BNU /L as documented below)
which sets the COM port immediately to that rate. Remember
to "unlock" the baud rate if not using a constant speed
between computer and modem.
BNU.COM would normally be loaded in your AUTOEXEC.BAT, and
installed as part of your normal system startup. A typical
command line might be:
BNU /F
[Loads BNU.COM with default settings and fast ANSI]
BNU will respond with a short copyright notice and an
indication that it has been successfully loaded. The number
of ports installed for will also be shown.
- 3 -
BNU Revision 5 FOSSIL Communications Driver
Version 1.70
BNU.SYS must be loaded from CONFIG.SYS (and probably can be
using QuarterDeck's DEVICE.COM under DESQview but I have only
run it this way for short periods) using a "device" line,
such as:
device = C:\BNU.SYS /P2 /L0:19200,8N1 /F
[Loads BNU.SYS for 2 ports, port 0 (COM1) locked at
19200 baud 8 data bits 1 stop bit normal parity, fast
ANSI]
A similar copyright message is displayed as an indication
that the driver has been installed.
If BNU encounters an error in the command line, the driver
will NOT be installed. The device driver version displays
the command line parameter in error.
BNU has been successfully run loaded "high" above the 640K
mark using both QuarterDeck's QEMM(tm) and Qualitas'
386^MAX(tm) 386 memory management products. It should be
noted that there may be performance differences as a result
of either 386i virtual mode switching or differences in
hardware RAM access speeds between mother-board RAM and that
used on an extended RAM card. You should test the results on
your own hardware before deciding which method is better,
since generalisations without considering all the factors
involved can be misleading.
Other enhanced memory products may or may not work, but I am
either not familiar with them or do not know enough about
them to comment.
Since BNU.COM can be unloaded at any time (unless BNU
considers it unsafe to do so for various reasons), you should
be aware that doing so sometimes creates "holes" in memory.
This is not a problem so far as MS-DOS or various
applications running in it are concerned, but the effect of
releasing more memory for DOS to use may be lost. This is
almost always the case when unloaded from within a batch
file: the memory freed will not be available until after the
batch file terminates.
If the desired effect is to "disable" BNU completely, refer
to the /Q and /C command line switches below. This leaves
BNU loaded, but provides a means of disabling the driver
completely and forces use of the BIOS INT 14H functions or a
previously installed driver.
One note regarding PS/2 hardware and applications which use
its specific INT 14H functions (though I haven't actually
seen any). A PS/2's extended BIOS contains a superset of INT
14H services, which were designed after FOSSILs first become
available for PC's. The additional services are NOT
compatible with the extended functions supported by FOSSIL,
and you should therefore either unload (/U) or deactivate
(/Q) BNU prior running such software.
- 4 -
BNU Revision 5 FOSSIL Communications Driver
Version 1.70
DEFAULT SETTINGS
By default, BNU uses 1K (1024 byte) communications buffers
for both transmit and receive. This should be sufficient, if
not excessive, for most applications. This may need to be
varied for systems running at slow (less than 6MHZ) clock
speeds, use modems with higher baud rates, make use of
special modem technology, run under multitasking software or
run on a network. Some applications (for example terminal
emulation systems and bulletin boards) require more buffering
because of the nature of how they communicate.
The fast 'ANSI' output is DISabled by default. The option to
use the faster output method will normally work well under
standard MS-DOS, DESQview or most DOS-based environments.
This will NOT work under PC-MOS/386 as it makes use of an
undocumented MS-DOS feature not supported by that operating
system.
After installation (only the first successful invocation of
BNU.COM actually loads the TSR portion), the FOSSIL driver's
extended interrupt driven functions are inactive, and only
the basic BIOS services are provided (by BNU). An
application must specifically "initialise" a port for
communications to make it become active and use the interrupt
driven functions.
When BNU is installed, it does a brief and simple hardware
diagnostic to detect what communications ports are valid. If
errors are found (most PC BIOS' miss detection of 16550
USARTS, cannot detect non-standard communications hardware
and do not look for anything above COM2), the appropriate
BIOS tables and hardware bits are patched. This means that
if you install and use non-standard port and IRQ settings for
a communications card, and tell BNU about these (via the
BNUPORT utility) your BIOS will be changed to reflect this,
allowing other BIOS-compatible programs to use the
communications port (COM1 through COM4 only since the PC BIOS
can only support up to 4 ports).
COMMAND LINE OPTIONS
Following is a list of command line options available in
either or both BNU.COM and BNU.SYS. These allow "fine
tuning", setup and utility functions.
Command line switches can be given with a preceding dash (-)
or forward slash (/). Some parameters show a colon
separating the switch itself and a numeric parameter: this is
optional, and is included only for readability. An equals
(=) or comma (,) are NOT optional and must be included since
these separate different parts of a command line switch.
- 5 -
BNU Revision 5 FOSSIL Communications Driver
Version 1.70
There are basically two "groups" of command line switches.
The first are configuration switches, which affect the
tuning, performance and behaviour of the communications
driver. These can generally be combined on the same command
line (and invocation) without problems. Exceptions (if any)
are noted where relevant.
The second group are "utility" functions. These switches are
normally used EXCLUSIVELY of all other switches. That is, if
you use them, they must appear SEPARATELY on a command line.
The switches in this group are:
/C Recapture INT 14H vector
/B Reboot system unconditionally
/S Display driver status
/H Display help for command line switches
/U Unload driver from memory
/W Enable/disable carrier watch
Remember that you can invoke BNU.COM multiple times with no
risk in loading the communications driver portion more than
once in any logical "task". All utilities relating to
BNU.COM are contained within the same .COM file.
The device driver version works a little differently. Its
command line (specified in CONFIG.SYS) must contain only
configuration items, since the utilities are not supported.
These are contained within a separate executable called
BNUHELP.COM, and have a similar - if not identical - syntax
to the utility functions in the .COM version. Any
differences are noted below.
~~~
/T Set Transmit buffer size
Available in .SYS and .COM versions
eg. /T:512
Sets 512 byte transmit buffers
The default transmit buffer size is 1024 bytes. Since
file transfers are "transmitter driven" so far as speed
is concerned, this should be large enough to service the
interrupt driven transmitter without it "waiting" to be
filled by the application. These should be increased in
size where multitaskers, networks or faster baud rates
are being used.
- 6 -
BNU Revision 5 FOSSIL Communications Driver
Version 1.70
/R Set Receive buffer size
Available in .SYS and .COM versions
eg. /R:2048
Sets RX buffer size of 2048 (2K) bytes
The default RX (receive) buffer size is 1K, or 1024
bytes. In practice, only a portion of this is actually
used on a constant basis, but this will be dependant on
how fast an application can service the buffer (and keep
it empty).
Buffer sizes CAN be changed "on-the-fly". But at no
time can both the receive and transmit buffers be
increased in size beyond the combined amount when first
installed. For example, if BNU was installed with 2K
transmit and 4K receive buffers, only 6K is available to
each port in total. Combined buffer size cannot exceed
that 6K. An attempt to exceed this amount will result
in an error.
Changing buffer sizes whilst communications tasks are
active will be disallowed.
When modifying the buffer sizes, it is advisable to
first specify the one which is to "shrink" in size,
before the one which will "grow". For example, if 1K
buffers were active (with a total of 2K available), and
you wished to change these to .5K receive and 1.5K
transmit:
BNU /T1536 /R512
would result in an error (Maximum buffer size exceeded).
The result could be achieved by changing the order of
the command line arguments to:
BNU /R512 /T1536
/P Enable concurrent ports
Available in .SYS and .COM versions
eg. /P:2
Enables two ports for use concurrently
This sets the number of ports which can be active at the
same time. Up to 4 ports can be used (in this current
release), in up to 16 different configurations.
By default, BNU enables one port for 'interrupt driven'
use. This is the most memory conservative approach and
fits the requirements of the majority of installations.
The current version does not support shared port
arrangements or multi-port 'intelligent' serial IO
controllers.
- 7 -
BNU Revision 5 FOSSIL Communications Driver
Version 1.70
This switch does not determine WHICH ports will be
valid, only HOW MANY can run FOSSIL driven at one time.
The driver will support whichever port (0-15) the
application selects.
/L Lock ports baud rate and/or settings
Available in .SYS and .COM versions
eg. /L:0=19200
Locks baud rate on port 0 (COM1) to 19200
/L:1=38400,8N1
Locks port 1 (COM2) to 38400, and forces 8
data bits, no parity and 1 stop bit.
/L:0=0,7E1
Unlocks port 0 (COM1) if previously locked,
or leaves it 'floating' if not, then forces
7 data bits, even parity and 1 stop bit.
The baud rate given must be valid for a standard FOSSIL
driver, and can be one of 0 (unlock) 300, 600, 1200,
2400, 4800, 9600, 19200 or 38400. High speed modems
locked at a baud rate of 9600 or above also have CTS/RTS
hand-shaking forced since these use the modem's internal
buffering which make use of CTS/RTS flow control.
A baud rate specification of zero "unlocks" the baud
rate and resets handshaking to default (whatever the
application sets).
When using this switch, your modem MUST support a
constant modem to computer speed, otherwise any baud
rate change requested by an application will be ignored,
resulting in an incorrect setting between your system
and remote. The result will normally be garbled input
and output.
When the baud rate is locked, the port's baud rate is
set IMMEDIATELY. The baud rate is maintained at the
locked rate even though FOSSIL is not active -
applications making use of BIOS calls to change baud
rate will not succeed. This allows non-FOSSIL aware
applications to be run without fear of the baud rate
being changed even though these do not explicitly
support higher baud rates.
/F Enables/disable 'fast' screen writes
Available in .SYS and .COM versions
eg. /F+ Enables 'fast' screen writes
/F- Disables 'fast' screen writes
- 8 -
BNU Revision 5 FOSSIL Communications Driver
Version 1.70
This switch is used for versions of DOS which support
faster character output via the undocumented INT 29H
method (used to call the ANSI driver directly). To my
knowledge, this will work on all DOS versions 2.00
through 4.01, but since it is "undocumented", there is
no guarantee that it will work.
This should NOT be enabled under PC-MOS/386 version 4.0
or below.
/O Enable function 0x1c compatibility
Available in .SYS and .COM versions
eg. /O
This switch is used to enable "compatible" operation of
BNU in situations where either X00 or Opus!Com worked,
but BNU doesn't. Due to a misunderstanding of the
FOSSIL specification, X00 and Opus!Com return 0x1c (28)
whenever the highest function number is requested by an
application instead of 0x1b (27) as required the
Revision 5 specification (FSC-0015).
Several applications rely on the 'feature' of these
drivers and require a 0x1c return to verify that the
functions used by the application are present. At this
time, a function 0x1c is not actually implemented by
X00.SYS, Opus!Com or BNU.
When given, this switch tells BNU to return 0x1c, and so
allows applications relying on 0x1c to work with it.
Typically, such programs will return with "FOSSIL not
present" or "FOSSIL version too old" (or words to that
effect) when BNU is loaded without using '/O'.
/Z Sets 16550 FIFO size/trigger levels
Available in .SYS and .COM versions
eg. BNU /Z0
Enables full 16550 FIFO buffering (16/14)
BNU /Z5
Disables 16550 FIFO buffers
This switch provides the ability to 'fine tune' a system
equipped with a National Semiconductor 16550AN UART.
The UART is the device used in PC's for asynchronous
communications handling, and the 16550AN is a superior
form of these (as compared to an 8250 or 16450 with
which it is pin-compatible), since it provides on-board
FIFO (first-in first-out) buffers or queues for
receiving and transmitting.
- 9 -
BNU Revision 5 FOSSIL Communications Driver
Version 1.70
Software must be built to specifically take advantage of
this UART's features in order to gain any real benefit.
Normally, the 16550's FIFO buffers are disabled on
power-up, and remain that way unless specifically
enabled. The software itself must service interrupts by
emptying and filling "queues" rather than the normal
single character receive and transmit holding registers.
Having this ability to service multiple character
requests in one hardware interrupt call makes it
possible to SIGNIFICANTLY reduce interrupt service
overhead and thus CPU usage on any machine. This has
very obvious advantages when operating under a
multitasker, on a network, concurrently with other
heavily interrupt-driven devices or with modems or other
communications devices running at high baud rates.
The /Z switch takes a single digit parameter - a number
between 0 and 5. This number affects the internal
settings of both the UART itself (its internal 'trigger'
levels, which define how "full" the FIFO's will be
allowed to get before triggering an interrupt to the CPU
for service) and how full BNU will let the transmit FIFO
be queue on each transmit 'request'.
Valid numeric parameters to the /Z switch are:
/Z0 16 bytes 14 bytes (max)
/Z1 14 bytes 14 bytes (max)
/Z2 08 bytes 08 bytes
/Z3 04 bytes 04 bytes
/Z4 01 byte 01 byte
/Z5 - FIFOs disabled -
Where 16550AN's are not present, BNU automatically
ignores this switch completely. The default value is
'/Z0', which activates the full 16550AN capability.
/M Enable/disable initialisation message
Available in .SYS and .COM versions
eg. /M+ Enable init message
/M- Disables init message
Normally the driver outputs a message when an
applications initialises the driver for its use. This
may be suppressed or reenabled by using this switch.
/U Unload driver from memory
Available in .COM version only
eg. BNU /U
Attempts unloading resident driver from memory
- 10 -
BNU Revision 5 FOSSIL Communications Driver
Version 1.70
This switch tells BNU.COM to unload itself from memory.
This forces all ports to be deactivated (if any are
active). This will fail if programs loaded after BNU
have "captured" interrupt vectors which are used by BNU
(and which BNU cannot restore as a result). In this
case, BNU will not load, but will indicate this in an
error message. You will have to either unload these
later programs (such as FOSSIL appendages), or reboot
your system.
Since BNU.SYS is a device driver, it cannot be disabled
or unloaded from memory.
/Q Disable communications driver interface
Available in .SYS and .COM versions
eg. BNU /Q
Disables resident driver
This switch is normally given when BNU installs itself,
and the effect is to "delay" capturing of the INT 14H
vector until a '/C' command is issued. This may be
useful if loading with a multitasker and using other
incompatible communications drivers in other tasks.
If issued while BNU is already loaded, the previously
active INT 14H communications services vector is
restored. BNU's extended FOSSIL services are
effectively "dropped" out of the chain.
/B System reboot
eg. BNU /B0
Select default reboot method
BNU /B
Reboot (warm)
This switch has two uses. When a digit is given after
the 'B', the reboot method is selected. Only two values
are valid 0 or 1.
Method 0 selects a standard BIOS method of jumping to
the system's reset vector. This should work with most
DOS environments on a wide range of hardware, including
PC/XT/AT and 386 compatibles.
Method 1 makes use of the AT's keyboard reset line to
cause a system reboot. It will work only on AT and
386AT systems. However, this method will work under
some 386 specific software where the first method does
not. (for example, PC-MOS/386). In short, it "plays
rough". Some 386 machines and almost all PC/XT systems
cannot and should not use this method.
- 11 -
BNU Revision 5 FOSSIL Communications Driver
Version 1.70
If no digit is given after the 'B', BNU proceeds to
reboot the machine - unconditionally.
/H or /? Display help information
Available in .COM version only
This switch displays information about command line
switches and usage for those who don't believe that
reading manuals is a very useful exercise. Pity they'll
probably never discover or know about this switch unless
told....
This switch much be used alone, and will not load
BNU.COM into memory. The help screen displayed will
look like:
BNU Revision 5 FOSSIL Compatible Asynchronous Communications Driver vX.XX
Copyright (C)1989, David Nugent & Unique Computing Pty Ltd FidoNet 3:632/348
■ Usage: BNU [options] · accepts / or - as switch character
/U ∙ Uninstall (if already resident)
/T=nnnn ∙ Set TX buffer size to <nnnn> (decimal)
/R=nnnn ∙ Set RX buffer size to <nnnn> (decimal)
/P=nn ∙ Enable nn concurrent ports (1-16 decimal)
/D[=n+|-] ∙ Enable or install diagnostics panel
/N ∙ Disable diagnostics panel (may be reenabled)
/A=nn ∙ Set screen attribute for diagnostics window
/Lp=n[,lps] ∙ Lock port <p> (0=COM1) baud rate to <n> (0=Unlock)
Optional: l=Character length, p=Parity, s=Stop Bits
/W=n+|- ∙ Enable(+)/disable(-) carrier watch on port <n> (0=COM1)
/Q ∙ Prevent INT 14H capture (install) or release INT 14H
/M+|- ∙ Enable(+)/disable(-) FOSSIL "init" message
/I=n+|- ∙ Initialise(+)/deinitialise(-) FOSSIL on port <n>
/F+|- ∙ Enable/dssable faster screen writes via ANSI driver
/B[0|1] ∙ Select reboot method, or perform system reboot
/Z[0-5] ∙ Sets 16550 FIFOs [0=Max(16) 4=Min(1) 5=Disabled]
/O ∙ Enable function 0x1c "compatibility"
/C ∙ Recapture INT 14H vector
/S ∙ Display driver status
/H or /? ∙ Display this help screen
/C Recapture INT 14H vector
Available in .COM version only
eg. BNU /C
Recapture INT 14H
(must not be used with any other switches!)
This forces BNU to takes a look at the current location
of INT 14H and makes sure that it points into the
resident portion of BNU. If not, it resets the INT 14H
address to the correct location.
This is most often necessary when using a multitasker -
such as DESQview(tm) - which revectors the interrupt on
- 12 -
BNU Revision 5 FOSSIL Communications Driver
Version 1.70
loading. Since one standard method of detecting the
presence of a FOSSIL driver is to examine memory shortly
after the location pointed to by the INT 14H interrupt
vector, the 'stealing' of the interrupt in this way
causes many applications to fail to locate the FOSSIL
driver. Applications which use the 'init signature'
method of detecting a FOSSIL driver will not normally be
affected by this behaviour, but there is a risk that
whatever 'stole' the vector will unintentionally change
CPU registers used by the application for the FOSSIL
call, causing any number of complications (and probably
a system crash!).
Another use of this switch might be to enable toggling
between two or more communications drivers which make
use of INT 14H (such as packet radio communications
drivers). '/Q' can be used to switch BNU "off" and
restore a previous vector, and '/C' used to recapture it
again for FOSSIL use. The following sequence is the
suggested method of doing this:
BNU /Q [other switches]
(Install but don't vector INT 14H)
<install other communications driver>
BNU /C
(Capture INT 14H saving previous vector)
To use the secondary driver (which could even be another
FOSSIL driver, but cannot be BNU), use "BNU /Q", and
"BNU /C" to use BNU again.
NOTE: This switch MUST NOT be combined with any others
(since they will be ignored)!
/W Enable/disable carrier watchdog
eg. BNU /W0+
Enables carrier watchdog on port 0 (COM1)
BNU /W1-
Disables carrier watch on port 1 (COM2)
This switch enables or disables carrier watch for a
particular communications port. If carrier detect drops
(the caller hangs up) while the watchdog function is
active, the system will be rebooted.
This feature is most often used with programs which are
not "carrier smart" and do not monitor carrier detect -
some of these were probably never intended to run with
output directed to a communications port. If a caller
hangs up while such a program requests input, it may be
effectively "stuck", unable to continue until its input
is satisfied. It is possible that this situation also
presents a security risk.
- 13 -
BNU Revision 5 FOSSIL Communications Driver
Version 1.70
The carrier detect watchdog is not an elegant nor ideal
solution to this problem, and especially not useful in
multitasking or networked computing environments, where
rebooting of a whole machine could upset other
concurrently running tasks and workstations. There are
some very clever "watchdog" programs which are much more
suitable to do this, such as Angelo Besani's(++) WABIRD,
which gracefully terminates the program and restores the
system to the state it was in when originally invoked.
Ommission of the '+' or '-' is considered an error.
This switch MUST be used exclusive of all others.
(++) Angelo Basani is contactable at:
Amnesia CBCS, Varese - Italy
Fidonet 2:331/101.0, +39-331-263425
/S Display BNU status
Available in .COM version only
eg. BNU /S
Displays BNU's current status
The resulting display will depend on the current state
of the resident version of the driver in memory, but if
loaded will normally look similar to:
Driver Version: 1.70 Installed
Ports Available: 1
Ports Active: 0
FOSSIL Revision: 5
TX Buffer Size: 2048
RX Buffer Size: 2048
Max Buffer Size: 4096
Diags Module: Inactive
Init Message: Enabled
ANSI Output: Fast
Port Locked: 1 @ 19200
If the driver is not yet installed, only the first line
will be shown, with the text "Not Installed". The
diagnostics module (explained below) is one of "Active",
"Inactive" (present but disabled) or "Not loaded". Any
ports whose baud rate has been "locked" are listed
sequentially.
Note that port numbers are ZERO-BASED. Port 0 is what
DOS refers to COM port 1 (ie. the device COM1), port 1
is COM2 etc. DOS does not define devices for ports
above port 3, though BNU can utilise them.
- 14 -
BNU Revision 5 FOSSIL Communications Driver
Version 1.70
/D Enable/disable or install diagnostics module
eg. BNU /D2+
On BNU install: Installs the diagnostics panel with
a default 'refresh' rate of 2, and
enabled (the '+' here is optional)
Otherwise: Provided the diagnostics module has
been installed, enables it and sets
the 'refresh' rate to 2
BNU /D-
Disables diagnostics screen updating (but does not
deactivate them)
This is an advanced option, useful for software
development using FOSSIL calls as a means of viewing
what the current state of the FOSSIL driver is in 'real
time'. When enabled and a port is active for FOSSIL
extended calls, a panel is continually refreshed on the
screen during each timer tick which displays a summary
of various FOSSIL driver states.
Information for up to 4 ports can be displayed
concurrently on the screen (thought this might get a bit
messy!), overlaying anything currently displayed.
By default, the "refresh rate" of the panel(s) is set to
0, which means it is refreshed EVERY timer tick, or at a
rate of about 18.2 times per second. Refresh rates of 1
means every second tick, 2 every third, 3 every fourth,
and so on. Since video memory is slower than normal
RAM, slowing down the refresh rate will decrease the
overall detrimental effect that diagnostics has on
system performance.
It should be noted that running diagnostics quite
significantly impedes system performance and adds a
great deal of CPU overhead in servicing what is
effectively a "background" task. You can therefore only
run diagnostics on a system equipped with a fast CPU
(286 or above), running at lower baud rates and/or with
a 16550AN UART. Some general 'minimal' guide-lines are:
■ 2400 baud or below
∙ 6-8MHZ 286 class
∙ 16450 UART or better
■ 9600 baud
∙ 10-16MHZ 286 class -or- ∙ 20MHZ 386 class
∙ 16550 UART ∙ 16450 UART
■ 19200 baud
∙ 16-20MHZ 286/386 class
∙ 16550AN UART
It takes quite a bit of processing power to drive a
'background' routine to refresh video RAM (which is
relatively slow) without impacting on system
performance.
- 15 -
BNU Revision 5 FOSSIL Communications Driver
Version 1.70
If you are having any difficulties at all using the
driver and have enabled the diagnostics panel, disable
them immediately and try again. I have found this to be
a major cause of problems in the past. This feature is
officially 'not supported' under any conditions, and I
certainly don't need to hear that it "does" or "doesn't"
work on your system. Before ANY problem report is made
for any reason whatsoever, please try whatever you are
trying to achieve WITHOUT DIAGNOSTICS LOADED!
Usual symptoms of the diagnostics panel impacting in a
detrimental way on a system's ability to communicate are
failed handshaking between Fidonet mailers, poor
resilience in file transfers when "task" switching under
multitasking software, some spurious character loss from
remote during terminal sessions, failure to initialise a
modem and inability to detect incoming calls from a
modem returning verbose response codes (amongst
others...).
When loaded (which must be done via the /D switch when
BNU is initially installed), you can selectively enable
or disable the diagnostics display from a keyboard "hot
key". The window is in an initial "on" state, but can
be toggled on or off by pressing LeftShift-Ctrl-5 (the
'5' located on the numeric keypad). The 'refresh rate'
can also be adjusted on-the-fly using LeftShift-Ctrl-
Grey+ and LeftShift-Ctrl-Grey-. The panel itself can be
shifted on the screen by holding down the LeftShift-Ctrl
combination and pressing Up, Down, Left and Right arrow
keys. Note that the background screen is NOT restored
(since it is never saved).
In summary:
Left-Shift Action
Numeric 5 Toggle panel "off" and "on"
Grey+/Grey- Speed up/slow down panel refresh rate
Arrow keys Move diagnostics panel on screen
Note that these 'hot-keys' work, no matter if the panel
is visible or not, but not if disabled using the /N
switch.
Toggling the panel "off" using LS-5 does not entirely
defeat the CPU overhead required to service the panel.
In that case, the background task is still active, and
only the panel is not displayed. To entirely disable
the diagnostics panel, either unload and reload BNU
without the /D switch, or use "BNU /N" to effectively
turn it off.
The following diagram shows a typical diagnostics panel
display, and explains the fields shown. All numeric
values are hexadecimal (base 16).
- 16 -
BNU Revision 5 FOSSIL Communications Driver
Version 1.70
┌── Port 0001 ┐ ─────── Port number, zero based (0=COM1)
│ TX Cnt 0001 │ ─────── Chrs currently in transmit buffer
│ TX Max 003F │ ─────── Maximum chrs found in transmit
│ TX Bse 141E │ ] buffer (this is cleared whenever
│ TX Top 241D │ ] ──┐ the port is initialised)
│ TX Nxt 144A │ ] └── Transmit buffer pointers/limits
│ TX End 1449 │ ]
│ RX Cnt 0002 │ ─────── Chrs currently in receive buffer
│ RX Max 0019 │ ─────── Maximum chrs found in receive
│ RX Bse 241E │ ] buffered (cleared on init)
│ RX Top 341D │ ] ───── Receive buffer pointers/limits
│ RX Nxt 249A │ ] ┌─── Current flow control state
│ RX End 249A │ ] │ highbyte=remote, lowbyte=local
│ FlwFlg 0080 │ ───┘┌── Active flow control settings
│ FlwCtl 0002 │ ────┘ highbyte=remote, lowbyte=local
│ Status 6238 │ ─────── Current line/modem status
│ FifoSz 0010 │ ─────── 16550AN FIFO buffer (TX) size
│ Errors 0000 │ ─────── Number of FOSSIL errors registered
│ ErrFun 0000 │ ─────── Function (AX value) of error call
│ LastAX 0300 │ ─────── Last Int 14H function call (AX)
│ Int14H 5F73 │ ─────── Accumulated Int 14H calls
│ ISRInt 0D4F │ ─────── Accumulated hardware interrupts
└──BNU─vX.XX──┘
If you want to load diagnostics but have them completely
inactive by default, use the following batch file
sequence:
REM Load diagnostics module when installing BNU
BNU -D <other switches ...>
REM Immediately disable them
BNU -N
The option to load without screen refresh "/Dn-" still
uses clock cycles: only the screen update is inhibited.
The "/N" switch actually disables the background
processing and will not cause any degradation in
performance. "/D" can be used to reenable the module
again.
/N Disable diagnostics panel
eg. BNU /N
This switch disables output of diagnostic information to
the screen, and also the background processing required
to update it.
- 17 -
BNU Revision 5 FOSSIL Communications Driver
Version 1.70
/A Set diagnostics panel attribute
eg. BNU /A=79
Causes the diagnostics panel to become intense
white on red
This allows the physical screen attribute to be set. By
default, a colour screen uses dark blue on white, and a
monochrome screen reverse video.
/I Init/deinit FOSSIL enhanced functions
eg. BNU /I0+
Initialise port 0 (COM1) for FOSSIL processing
BNU /I1-
Deinitialise port 1 (COM2)
This provides the facility to force normally non-FOSSIL
aware BIOS compatible programs to use the basic FOSSIL
character input/output functions.
This has specific advantages when running under a
multitasker, since all input/output is from interrupt
serviced buffers, and not directly polling the
communications port for activity.
Not all non-FOSSIL aware programs will be compatible
with use of this option. Only strictly BIOS-compliant
programs will benefit. Some program will have their own
interrupt driven communications functions, and others
will poll the port directly. Initialising the FOSSIL in
this way MAY interfere with correct operation of these
programs.
GENERAL INFORMATION
The following sections outline how best to utilise the driver
and get the best performance from it on your hardware setup.
INSTALLATION
BNU.COM is usually installed in your AUTOEXEC.BAT or at some
time before you load your communications software.
Alternatively, MS-DOS 4.xx has an option to allow loading of
some 'compatible' TSRs using an "install=" statement in your
CONFIG.SYS. A major benefit of this is that BNU can be
loaded before any environment variables are set, and so takes
up the absolute minimum of RAM. However, as with the device
driver when loaded from CONFIG.SYS, BNU.COM cannot be
unloaded from memory using the "/U" option.
- 18 -
BNU Revision 5 FOSSIL Communications Driver
Version 1.70
ERRORLEVELS
The following errorlevels are returned by BNU (this also
documents some of the possible errors which can be returned):
0 No error - operation(s) successful
1 Status was requested and displayed
2 A FOSSIL driver other than BNU is present
3 Incompatible version of BNU is already loaded
4 Can't modify parameters with ports active
5 BNU is not yet resident or loaded
6 Not used
7 DOS memory allocation error - fatal abort
8 Invalid command line option
9 Can't unload - FOSSIL appendages are loaded
10 System reboot failure
11 Error enabling or disabling carrier watch
12 Unable to recapture INT 14H vector
13 Can't unload if installed from CONFIG.SYS
14 Maximum combined TX/RX buffer size exceeded
15 Can't disable/enable diags panel - not loaded
16 Unable to unload due to interrupt chaining
17 Problem initialising FOSSIL (with /I)
MULTITASKERS
Prior versions of BNU directly supported various multitaskers
by allowing for "poll" detection on status and character I/O
calls made to the FOSSIL. When BNU sensed a task was "idle",
it automatically gave time slices up during "polling" to
other tasks in the system.
This internal multitasker support has been removed from
BNU.COM and BNU.SYS, and the /X switch is no longer
implemented. However, the current version of BNU does have
'hooks' for an installable driver to link into BNU and carry
out this task. This eliminates much of the unnecessary
"baggage" suffered by users of BNU who do not need this
feature. It also eliminates code made redundant by not
having all multitasker time slice resident at once,
irrespective of which specific multitasker is in use. Only
that code which is actually used and plays a part in support
of the multitasker itself is loaded.
While this current release (1.70) is not accompanied by these
drivers (which are now [October, 1989] in beta test),
multitasking appendages for DESQview/TopView and PC-MOS/386
will soon be available.
- 19 -
BNU Revision 5 FOSSIL Communications Driver
Version 1.70
MEMORY
BNU.COM is approximately 11K in size. It is made up of the
following main parts:
Description Size Used by
Resident
-------------------------------------------------------------
ISR Device Driver 0.5K Common 4 ports Yes
INT 14H Despatcher 4.5K Common 4 ports Yes
Diagnostics Model 1.0K Common 4 ports Optional
Initialisation/Setup 1.0K Run time only Discarded
Command line utility 4.0K Run time only Discarded
-------------------------------------------------------------
What eventually remains resident depends upon what command
line options are used. Initial overhead is about 5K for the
ISR and despatcher. If diagnostics are used (rarely), then
add 1K. Add to this, the sum of the transmit and receive
buffers times the number of communications ports selected.
THE DIAGNOSTICS PANEL
The ability to view the state of the FOSSIL driver is very
useful when developing software utilising FOSSIL calls. It
can also be an invaluable aid in "tuning" the driver to your
machine. Memory is precious - especially in a multitasking
environment, and most of the time, the standard 1K transmit
and receive buffers are far too much to allocate. This can
only be empirically tested.
Instead of "guessing" and using trial and error to see how
well the driver performs, it is much better to enable the
diagnostics window. This provides a 'snapshot' of the driver
18.2 times per second (each clock tick). Particular fields
to look at are:
"TX Cnt" Indicates how full the transmit buffer is in
bytes.
"TX Max" This is the current 'maximum' count if
characters in the transmit buffer detected by
the diagnostics routine (it views the driver
in 'snapshots' so cannot be completely
accurate.
"RX Cnt" Indicates how full the receive buffer is in
bytes.
"RX Max" Maximum count of characters in the receive
buffer (see TX Max).
- 20 -
BNU Revision 5 FOSSIL Communications Driver
Version 1.70
"Int14h" Particularly useful for monitoring program
activity. This counter ticks over every time
the running application requests a FOSSIL
service.
"Errors" Locates possible problems in the program you
are running. Any time the program makes an
"illegal" call (usually incorrect register
values). The last FOSSIL function code
invoked which triggered the error will be
displayed next to "ErrFun".
By observation, it is possible to calculate the optimum size
for both receive and transmit buffers.
16550 USART SUPPORT
BNU fully supports the 16550 USART in buffered mode. Using
the /Z command line switch, you can decrease the amount of
FIFO buffering used, or disable the FIFO's completely.
This option has been included for "compatibility" reasons.
Previous releases of BNU used the equivalent of "/Z2"
buffering, whereas this release defaults to full use of the
FIFO queues. If you have problems using the default "/Z0"
setting, try reducing first to "/Z1", then "/Z2" or lower,
and once you've found a setting that works, please contact me
(I'm interested in know what sort of setup this DOESN'T work
on).
BETA VERSIONS
Versions of BNU will either be BETA TEST versions or full
releases. Public release versions are numbered ending with
a zero and carry no "alpha", "beta", "gamma" etc. suffix.
Beta test releases carry an suffix after the version number,
and will be numbered ending with a non-zero digit (for
identification of incremental versions).
Beta releases of the BNU driver are not publicly available.
These are generally requestable from a number of systems, but
are be restricted for use by beta testing sites only. If you
would like to assist in beta testing future beta versions of
BNU, request "BNUINFO" (magic name) WaZoo from Fidonet
3:632/348 (or Alternet 7:833/387).
Beta releases are, by nature, less stable than release
versions. If you obtain one, please do NOT distribute it by
posting it for download or file request.
- 21 -
BNU Revision 5 FOSSIL Communications Driver
Version 1.70
PROBLEM REPORTS
If you have problems in getting BNU to run on your system,
remember that I cannot solve that problem if you do not take
the time to let me know. If you do decide to pursue any
problem, please give as much detail regarding your system as
possible so that I can more readily evaluate why something
may or may not be occurring. Please keep the information
relevant (ie. I don't need to know your shoe size, but I may
want to know what's in your CONFIG.SYS!).
Some information I'll probably need:
o Machine type/model and class (XT/AT/386 etc.)
o Type of USARTs installed (8250/16450/16550 etc.)
o Communications software you're running
o Contents of your AUTOEXEC.BAT/CONFIG.SYS or other
batch files which may be relevant
o Switches used to load BNU.COM
o Whether you've used BNUPORT to change port
assignments
o Brief description of modem if at all unusual ie.
high speed, non-standard or sub-standard<grin>
o Version of MS-DOS in use
o Multitasker in use (if any), including version
o Other TSR's loaded during communications activity
o What other FOSSIL drivers have worked in the past
o An accurate and complete (oh, I wish!) description
of your problem
o Contents of a diagnostics window when the problem
is occurring (if at all possible)
o If you have TurboPower's TSR utilities or Andrew
Wylie's DOSMAP program (or some similar DOS memory
control block mapping utility), then redirect
output of this to a file and include it with your
report. Try to duplicate the exact state of memory
when the problem occurs. Then execute a command,
something like:
"mapmem -v -h >output.mem"
- 22 -
BNU Revision 5 FOSSIL Communications Driver
Version 1.70
DEVELOPERS!
BNU is currently being restructured to use an alternative far
call model, instead of the INT 14H interface. This will
follow the same lines as a FOSSIL appendage, and is expected
to yield significant performance benefits for DOS as well as
benefits for the developer by allowing more direct high level
language access.
Enquiries regarding this project should be directed to any of
the electronic addresses listed at the start of this
document.
SUPPORT
An echomail conference originating from my system (Fidonet
3:632/348) called "BNU" is available for general use for
support of BNU and related programs. Topic areas are
generally BNU related but also cover a wider area, including
FOSSIL communications, general usage, software development
using FOSSIL and 'tricks'.
Please forward any enquiries regarding this conference to me.
THANKS!
Thank you to the many people involved in helping the "BNU"
project, especially those of you willing (and silly enough)
to run beta versions on your own systems and tolerate the
problems. Without the support of these people, I would have
given up long ago.
Special thanks to Paul Marwick of 3:640/820 for his
painstaking assistance in beta testing, the high quality (and
quantity!) of his reports and observations and by helping
by proof-reading this documentation. And to his poor users
for putting up with "would you like to try something for
me?" ... :-)
- 23 -
BNU Revision 5 FOSSIL Communications Driver
Version 1.70
LICENSE OF USE
This license applies ONLY to non-commercial use of public
release versions. Special terms cover use of BNU, BNU beta
test versions, any accompanying programs (including any
supplied source code) and its documentation in commercial
environments. "Commercial" here is defined loosely as any
environment in which software assists - either directly or
indirectly - in any venture concerning making profit,
financial or other (material) gain.
Vendors of commercial (for sale) packages should contact me
regarding distribution arrangements. Special versions of BNU
are generated for specific commercial products, and that
product name is displayed as a part of BNU's standard
copyright message. Any version of BNU distributed as part of
another package or product which does not display any
indication of it being a "special" version in this way is in
breach of this license.
Programs and documentation are supplied free of charge on an
as is basis to the Fidonet (and othernet) community. You are
free to use them in any non-profit venture with no obligation
on either myself or my company to support or be responsible
for any such use (or misuse).
BNU, any accompanying programs, source and this documentation
are the exclusive property of Unique Computing Pty Ltd, and
is protected by international copyright laws. By obtaining a
copy of the package, you do not "own" a copy - simply a
license to use it. All property rights are retained by the
owner.
You may use the package and/or give copies of the package to
others including posting for download on a bulletin board,
but only in a form that permits inclusion of all files as
found in the original, archieved form in which BNU is
distributed. You are not permitted to modify any portion of
the package in any way, including, but not limited to adding
files to or removing files from the distribution package,
changing or editing the documentation, and/or changing or
modifying the executable program. Permission is granted to
repack the distribution archive using a different packing
method, provided that the uncompressed contents EXACTLY match
the uncompressed contents of the distribution archive (I have
no particular affiliation with or preference for any
particular archiving method.
BNU is not provided with a warranty of any kind, including,
but not limited to fitness for any particular purpose or
consequential loss.
This package may be posted for download or file request by
any FidoNet or compatible network system in archived form,
and in adherence to the terms of the License above. No
profit may be realised directly from such distribution,
- 24 -
BNU Revision 5 FOSSIL Communications Driver
Version 1.70
although BNU may be provided for download on "pay systems."
Distribution on diskette form is strictly prohibited unless
done for free for a charge not exceeding the cost of the
diskettes.
- End -
- 25 -